23

» WarCraft 3 / Волны мобов

Похожие вопросы:

ответ
~4okak:
Выбирай на любой вкус и цвет
А ещё не поленюсь тебе скинуть карту близов, из которой тоже можно учесть несколько простых и хороших уроков
Также на форму выложена открытая дота, можно дергать все что хочется и изучать, надеюсь тебе поможет и ты разберешся
ответ
Да проще в группы их пихать, и не придётся проверку на области делать.
ответ
Eota: Exodus
оригинальный автор DarnYak
поищи его последнюю карту...
помню раньше ещё был оф. сайт... но он вроде упал...
поиграть в эту карту еще. Никто из друзей и знакомых не помнит, но не приснилась же мне эта карта!
не приснилась... хорошая карта, но толпой играть слишком легко...

P.S. а нет, сайт ещё жив, кажется

23

» WarCraft 3 / Импортирование текстур

Похожие вопросы:

ответ
Сам MdlVis где лежит?
ответ
WarSC, и Вар вылетет. Нельзя писать путь к импортной текстуре.
Надо ставить импортной текстуре путь стандартной.
ответ
~8gabriel8:
Не знаю почему, но после нескольких попыток открыть карту в mpq-редакторе, файлы текстур появились, я их заменил и карта открылась.
ответ
MPQ Master'ом открывается
там и искать нужную модель и удалять

23

» WarCraft 3 / Смена текстуры

Похожие вопросы:

ответ
  1. Чтобы иметь и модель с обычной текстурой и с другой, с помощью программы для извлечения моделей из Warcraft 3 (я пользуюсь обычно Warcraft 3 Viewer, поищи на сайте), там ищешь справа в папках твою модель, извлекаешь её к себе на компьютер.
  1. Потом открываешь программой mdlvis (основная программа для моделлинга, тоже здесь есть) модель, сразу выделяешь её и нажимаешь кнопку UV-карты или модули - редактор текстур.
  1. Внизу есть путь для текстуры, измени на название скачанной. Нажми enter, сохрани модель.
  1. Если текстура специально для той модели, переходи к следующему пункту.
  1. Кинь текстуру и модель в папку с вариком и открывай WE. У тебя стандартная модель и модель с другой текстурой.

Возможно, звучит сложно, но я привык, несколько кликов - и текстура изменена.
ответ
ну вот в чём твоя ошибка: Ты изменил название текстуры, а значит ты изменил и пути, тебе нужно зайти в war3modelEditor и там уже открыв модель выбрать вкладку: Windows=>Texture Manager, где будет список текстур, ты удаляешь 1 старую текстуру, которая у тебя была и добавляешь новую, при этом модель с текстурой должны лежать в одной папке, которая не содержит кириллицы (например путь должен быть d:\Users\User\Desktop\moroz - без русских букв ).
Переименовать новую текстуру на старую по идее не имеет смысла, потому что опять же ты сохранил её без текстуры, а => испоганил, накосячил, сломал (называй как хочешь).
ответ
Смотри какой принцип описания тех или иных объектов и делай так же, не забывай про нумерацию объектов и подправку их количества в нужных местах.
Считаю нужным написать по этому поводу Золотую Фразу Академии — в базе есть статья об этом.
ответ
Melissa, заменяемая текстура дерева работает так:
создаём слот "none", редактируем его — вписываем ИД.
Соответственно, нужно просто добавить нормальную текстуру. Там уже можно будет настраивать материалы и удалять ненужные.
ответ
Можно:
  • Создать проект, пройти модерацию и добавить в него ресурс с вакансией — он появится в ленте ресурсов.
  • Написать в свой блог, запись будет в ленте блогов, соответственно.
  • Обратиться сюда (но этот ресурс, вроде, не особо активен.
Но в «Вопросы» писать не надо.

23

» WarCraft 3 / Кости атаки

Похожие вопросы:

ответ
Решения не было найдено! Самый верный способ сделать свою систему улучшений для юнитов, разбивая их на группы по признаку кол-ва грани у кости и кол-во костей, и в зависимости от этого повышать урон
ответ
переделывать модель
что тут еще сказать?
играть с настройками, пока не будет получен желаемый эффект
ответ
Никак, очень сложное заклинание (близзарды пряма изощрялись и собирали совещание, как бы это сделать посложнее - Dracolich(c))
Там бафф по сути триггер с особым событием которое запилили специально для этой способности - юнит потерял ману от каста заклинания, до него можно добраться с помощью мемхака - но костыльно и сложно.
Баши и криты можно отловить косвенно, по получению урона \баффа. Но это ненадежный способ, атака обрабатывается в момент замаха и движок узже знает попадет юнит или промажет, забашит или кританет по цели, еще за долго до самого удара. Поэтому самый рациональный способ - триггерные аналоги этих пассивок - крит, ну тупо перед атакой вручает абилку крита со 100% шансом и усе, баш так же. Особо изворотливые могут сделать детект физического урона и сделать баш из дамми каста молотка бурь (нам же надо только отловить сам факт удара) ну а крит посложнее, но тоже вполне реализуемо.

23

» WarCraft 3 / Триггер

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
спасибо, XGM Bot!
Нашел это - xgm.guru/p/blog-nvc123/ur1-3
ответ
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
ответ
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...

23

» WarCraft 3 / Случайный каст

Похожие вопросы:

ответ
nvc123, ну так потому я и подписался как Кэп. Просто тема почему-то до сих пор не закрыта, вот я и подумал, что твой ответ не понятен. Ибо, уложить такую формулировку в одно слово - это, конечно, мастерство :)
ответ
если это каст который не сбивает приказ то нужно безумие юзать либо сохранять приказ (теряется последовательность)
если же это скилл который имеет малое время каста то либо просто настроить скорости каста/анимации либо делать как сказал ссср
Starman2222, для новичков у нас есть вот это
прочти разделы 1 и 2 и научись внятно объяснять что тебе нужно
потом возвращайся
ответ
Геометрия, седьмой класс, "Теорема Пифагора", а также "Теоремы Синусов и Косинусов" в помощь.
ответ
Ну как сказать, юнит является юнитом секунды 3 после смети (или сколько там установлено время смерти), потом его уже нету на карте, поэтому можно и не искать, но герои сидят в памяти пока их не удалят, в отличии от обычных юнитов, но всеравно их уже не существует в понимании движка на уровне бегающих и дерущихся юнитов.
ответ
Не удивительно, кто так делает?
Никаких вейтов в гуппах использовать нельзя, что за глупость! Для задержек существуют таймеры!
Слишком низкое время жизни дамми юнита, ставь секунд 5, то рисукуешь убить юнита неизвестно кем.
Ты не даешь видимость и не создаешь даммика за нейтрально пассивных, а зря! Даммик может не удивить в кого ему кинуть корни, цель можеть быть в тумане войны.
Чтобы кинуть корни в случайных юнитов в радиусе, есть особое дейстие GroupPickRandomUnit().
Спелл нужно переписать с 0, так же удалить русс. триггеры!

23

» WarCraft 3 / Партиклы

Похожие вопросы:

ответ
Не нашёл способа как отредактировать модель. Вообще данный юнит у меня под locust'ом поэтому принял решением для себя следующее:
триггерное увеличение юнита в 9999 раз. Партиклы исчезают :)
(если уменьшать размер до 0 - их видно)
Костыль в общем.

23

» WarCraft 3 / Тип дополнительного урона

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
Решения не было найдено! Самый верный способ сделать свою систему улучшений для юнитов, разбивая их на группы по признаку кол-ва грани у кости и кол-во костей, и в зависимости от этого повышать урон
ответ
Ответ:
"Бой- атака(эффект от улучшений)
ответ
Событие - получает урон, проверяешь тип юнита, который нужен и наносишь сверху урон, сколькотебе надо
ответ
VovkaShyt, будет, хоть 10 хоть 0,01 будет снижаться количеством брони, а эти параметры - снижение от типа брони, сила тьмы игнорирует тип брони, а вот атака героя не игнорирует тип защиты зданий, здания, вспомните как долго в мили картах ломаются здания.

23

» WarCraft 3 / Несколько простых вопросов

Похожие вопросы:

ответ
Добро пожаловать на факультет самообразования.
ответ
local real x = GetRandomReal(GetRectMinX(GetPlayableMapRect()), GetRectMaxX(GetPlayableMapRect()))
local real y = GetRandomReal(GetRectMinY(GetPlayableMapRect()), GetRectMaxY(GetPlayableMapRect()))
...
(действия с координатами)
...
Любые действия с локейшном можно переделать под координаты, если не используется z-координата, как сказано выше. Но z-координату используют не только лишь все, мало кто может это делать.
И обнулять ничего не придётся, так как действительное число не утекает.
ответ
как привязать переменную к существу
хэш,кс,структуры
выбор обширен
все варианты расписаны в статьях
ответ
кхе, всё вроде можно, но объяснять долго, третье простое, просто при юзании способности в триггерах добавь условие сравнения, если юнит цель применяемой способности нежить, тогда действие о дополнительном уроне, например если способность наносит 100, то 20% это 20,в действии приказать применяющий юнит нанести урон юнит цель применяемой способности 100+(0.20х100), перед этим 100 можно установить, как переменную, например если с каждым уровнем урон растёт на 100, то переменная int=100хУровень способности способность у применяющий юнит.
Сложно объяснил?
ответ
Немного теории.
В подобных моделях используются тэги ("upgrade first", "upgrade second"). На разных уровнях улучшения проигрываются анимации с разными тэгами. Виден один вариант здания, при этом остальные варианты невидимы.
В принципе, можно в настройках для разных юнитов выбрать разные модели, но если нужно именно всё в одной - можно обратиться за помощью в тему: xgm.guru/p/wc3/needmodels

23

» WarCraft 3 / Ломаются триггеры

Похожие вопросы:

ответ
nvc123:
Bariy vad, бред
ZLOI_DED, джнгп сам выносит переменные в блок глобал
ZLOI_DED, короче скрины с ошибкой и строкой на которую ругается в студию
В том то и ананас, что никто ни на что не ругается. Он просто берёт и не запускается. А всё что я сказал выше - мои наблюдения в сравнении.
Ещё важное замечание. JassHelper на старой карте сам выдаёт ошибки. На новых - херушки... Что за аншлаг? o_0
100% проблема в JassHelper'е! Не у меня одного такая фигня. На хайвворкшопе есть подобные темы, но там он хотя бы запускается, а у меня даже не запускается.
А я ландом занимался... не хотелось бы карту с нуля переделывать... Может есть у кого какие идеи?
UPD: Решилось установкой новой версии JassHelper и пересохранением карты через Сохранить как...
ответ
ssbbssc, вот сделал пару гифок. На одной у пеха стоит "можно оживить, разлагается", а на другой "нельзя оживить, разлагается"
ответ
datar1231, вот держи карту.
Когда будешь добавлять предмет, не забудь запретить его применение (в редакторе объектов: Нужно задействовать = Нет) и вообще удалить ему способность.
ответ
Daniil33, вот тебе рабочий пример, попробуй сам разобраться в чем у тебя ошибка.
ответ
Steal nerves:
инструкции как таковой нет, могу описать, но здесь миллион примеров нужно, чтобы разжевать новичку (и случаи уникальны у каждого, и их очень много. Не знаю с чего начать). А вообще что там сложного? знаешь jass, и все. Тебе нужно знать является ли объект хэндл, и нужно ли его удалять (или побочная нативка удалит, как например у текстагов. Текстаги можно не удалять напрямую, есть у него функция, задающая время жизни. Текстаг сам исчезнет. Или вот фильтр удалять не обязательно, она не утекает). Все одинаково: нужно удалить объект (помню, у меня жестко мультиборд утекал, пока не узнал, что есть функция обновляющая ячейку, она еще дает не плодит новые). Поэтому нужно знать можно ли удалить (умирающего юнита например удалять не нужно, сам разложится. А вот например предметы как руны нужно, при подборе руны, руна остается в игре. Например, миллионы книжек в магазине, если игрок будет покупать миллионами, он будет плодить. Поэтому при получении удаляй сразу). Чистить содержимое в хэш-таблице, и обнулять локалки. Функции BJ могут утекать, там не обнуляют локалки. Раскрыть функции BJ, там где есть локалка не обнуленная подправить и др. Помню, хотел взять координаты от точки, там x и y. Я вызвал (создал) два раза точки, раньше не понимал, что создаю точки. Нужно найти альтернативные, что возвращают не точку, а координаты (реальные числа), например, юнита. Чтобы знать, это надо смотреть на сайте (попался необычный хэндл, вбиваешь в поиск). Тебе нужна библиотека всех функции и нативок. Очень удобная библиотека есть в jngp. Щас нубы очень не любят jngp, так как не отображает ошибки и не компилирует что-то. Так выключите плагин UMSWE, и Vjass и Cjass тоже выключите. Пользуйтесь библиотекой и новыми триггерными менюшками, доступны в hNGP без этого. Все придет с опытом, просто подольше посиди с кодом.

23

» WarCraft 3 / Лимит

Похожие вопросы:

ответ
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
ответ
Возможно нет строки триггера.
На сколько знаю в триггерах нет ограничений, по крайне мере с этим не сталкивался, но в переменных есть, какое количество не знаю, но я всё сжал у себя.
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.
ответ
Roy Mustang:
128 mb
ответ
GetLocalPlayer, Нет, на гуях мемхака, вовсе исключён...
Так же мемхак нужно еще заставить работать, если ваши познания jass ниже среднего, а так же вам лень читать статьи по 10 страниц - эта наработка явно не для вас.

23

» WarCraft 3 / После воскрешения героя пропадает видимость

Похожие вопросы:

ответ
Steal nerves, для такой системы достаточно локалка + вейт
и ненужны никакие массивы и хэштаблицы
локалки как раз обеспечивают муи

23

» WarCraft 3 / Не работает триггер

Похожие вопросы:

ответ
Steal nerves:
  1. посмотри в РО у абилок прописаны приказы
  2. попробуй выводить на экран (см. внизу ссылку). Тыкни этой абилкой на юнита и проверь
  3. поищи в текстовике cj_order.j (находится в архиве игры). Кстати можно этот текстовик на сайте найти, Скорп 1000 выставлял
  4. поищи на сайте, такой вопрос был. Кому-то я на такой вопрос отвечал
ратуша самой себе может продавать? попробуй настроить способность, и потыкает на себя пусть. Мб нельзя
ответ
Ради прикола поставь ожидание. Wait на 2 сек. Должно сработать.
ответ
и в условиях наоборот тоже, там у тебя picked вместо matched
ответ
ScopteRectuS, Я решил проблему там баг, если указать регион как точку назначения портала, то с ним триггеры перестают работать. Я просто указал другой регион.
biridius, Ну это альфа версия, за 5 мин сделал, знаю об утечках.

23

» WarCraft 3 / Замедление времени

Похожие вопросы:

ответ
Добавлять бафы триггерами, на сколько я знаю, нельзя, но можно снимать.
Чтобы повесить баф на юнита, нужно:
  • Создать способность которая повесит нужный баф
  • Создать дамми юнита (с абилкой москит) и дать ему эту способность
  • В нужный момент создавать этого юнита и кастовать им по нужной цели
При инициализации карты, создать и удалить всех юнитов которые будут потом создаваться триггерами, чтобы избежать секундных фризов.
ответ
Юзай ретурн баг, он снова доступен...
Просто массив целочисленных куда записаны ид code.
Вот ссылочка

23

» WarCraft 3 / Защита карты

Похожие вопросы:

ответ
никак
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.
ответ
XGM Bot:
Похожие вопросы:

ответ
никак
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.
ответ
XGM Bot:
Похожие вопросы:

ответ
никак
ответ
Ну да, после этого в редакторе карт не откроешь. Но им и никто не пользуется для этого, когда есть MPQ Editor.
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.



23

» WarCraft 3 / Как сделать своего юнита нейтральным?

Похожие вопросы:

ответ
Вот сделал карту пример, на которой все юниты кроме 2 исчезают, заносятся в отряд- переменную (у меня в событии истечение 10 секунд) и появляются только если умер герой, который подчиняется тебе..
пример простой, его можно настроить как тебе нужно, я только показал принцип. Если что будет непонятно - спрашивай)
ответ
чтобы было вообще по своему вкусу отключаешь стандартное получение опыта и пишешь свою систему
в этом тебе помогут статьи
ответ
Как это сделано у меня в страннике:
Есть области, 1 для каждого НПС,
Есть группа, куда записаны все НПС.
Есть таймер с периодичностью в 3 секунды. Каждый раз идет проверка. Проверятся, что НПС состоит в группе и если случайное число 0-100 меньше и равно 50, то НПС двигается в случайную точку в своей области.
Когда герой начинает говорить, НПС останавливает свой приказ, поворачивается к герою и удаляется из группы, чтобы когда таймер сработал он не убежал.
Соответственно когда разговор окончен, НПС снова добавляется в эту группу.
Все просто.

23

» WarCraft 3 / Один меч в одни руки

Похожие вопросы:

ответ
Эх, друг) ну я реализовал так. Есть в способностях замечательный закл перевоплащение иллидана. В нейтрально - враждебных. То есть ты создаешь двух героев у одного рэнжа 600 у другова 100 например, а этот спел меняет твоих героев местами(каждому там уже свои спец эффекты делаешь). Там есть еще у меха спел есть похожий, там без ограничения по времени, ну думаю идею ты понял.

23

» WarCraft 3 / Область = позиции юнита

Похожие вопросы:

ответ
Не понимаю в чем проблема. Подвисание происходит от того, что на карте впервые появляется тип юнита (со спецэффектами может быть тоже самое). Подвисание убрать невозможно, но можно сделать так, чтобы оно происходило в более подходящий момент. Конкретно — сразу после загрузки карты. Для этого создаем триггер, который при инициализации сделает следующее:
  1. Создаст в недоступном месте даммика.
  2. Даст ему все способности, которые даммик может получить в ходе игры.
  3. Повысить все эти способности до максимального уровня.
  4. Удалить дамми.
Какие тут могут быть проблемы в реализации? Не важно каким образом и при каких обстоятельствах вы будете использовать дамми после. Не способность нужно запустить, а просто создать даммика. Даммик вызвает лаг, а не способность из РО и не прочий код.
ответ
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка
Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
ответ
~8gabriel8:
Сделал через Integer Comparsion, где количество нужных юнитов, рыбацких лодок, в области над магическим кругом больше 0.

23

» WarCraft 3 / (Редактор карт) Что не так в триггере?

Похожие вопросы:

ответ
  1. Думаю, что можно.
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.

2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.

  1. Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.

4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.

5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...

  1. Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.

  1. Это легко через Custom Value и переменние.

Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.
ответ
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе

В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.

Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
ответ
Изучение и использование любого языка программирования - крайне интересный процесс, и JASS - далеко не самый плохой вариант для того, чтобы быть изученным первым =)
Но если изучать что-либо не хочется, то ищите исполнителя и просите у него определённого результата за соответствующее вознаграждение.
ответ
8gabriel8, довольно много. Разбиение на отдельные триггеры может помочь от проблем с лимитом операций, но если в этом коде нет циклов, то оно практически бессмысленно. Ради интереса можешь попробовать сохранить карту с конвертированными триггерами, вдруг причина в модуле редактора, который за отрисовку GUI отвечает.
ответ
Закрыто.

23

» WarCraft 3 / Анимирование модели

Принятый ответ
Похожие вопросы:

ответ
JesusHipster:
Если ты хочешь просто камеру и портрет - импортировать их под одним именем, но второй модели приписать _portrait. Хочешь одной моделью - сделать камеру в camera manager во вкладке окна. Там все интуитивно. Если именно объединить модели, то такой функционал был у одной утилицы с хайва, но нужна еще ручная настройка и это совсем не в модел эдиторе делается. веса от этого не сильно убавится, меш не так много весит обычно как анимации, так что запариваться не советую с этим.
Я импортирую и портрет и модель, Sniper.mdx и Sniper_Portrait.mdx, я их импортирую, но вместо портрета у снайпера случайный ракурс, как и без портрета. Может, кинуть файлы, сам протестишь?
ответ
Вершины все правильно прикреплены к костям?
ответ
Все, разобрался. Тема закрыта)))~ssbbssc, Не нельзя, просто сама модель очень маленькая а при увеличении ее в игре баф над головой и под моделькой (например аура) становится очень огромным, а модель вроде нормальная
ответ
GF RaiseD:
FrigatPlay, если все совсем плохо - гугли "Основы 3D-Анимации".
ответ
создал анимацию birth без всего. тебе туда надо добавить строительство НЭ?

23

» WarCraft 3 / Помощь с триггерами.

Похожие вопросы:

ответ
Steal nerves:
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
Сделал с перевоплощением. Спасибо за идею.
Rare:
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
В действиях, во вкладке "Герои" находишь "Set Hero level =", потом ставишь "Arithmetic" и делаешь "Hero level - 3".
ответ
Kind Ram:
В моей карте игроки вместе играют на острове "полном жизни". И если крипов по типу волка или медведя не будет на локации, то он окажется слишком уж пустым.
С координатной функцией юнит также завис.(
Решить проблему так и не смог, теперь просто тыкаю юнита-игрока в систему рывков, чтобы тот сбежал от крипа.

23

» WarCraft 3 / Скрытие стандартных иконок

Похожие вопросы:

ответ
Хозяин Миров
То есть как установить для различных уровней способности различные иконки?
Насколько я знаю, невозможно. Только разные способности. Способности можно заменять "Техникой".
ответ
ReplaceableTextures\CommandButtons\BTNPriest.blp
ответ
без мемхака - нет

23

» WarCraft 3 / Лестница

Похожие вопросы:

ответ
Щяс глянул, в этой карте это сделано на невидимых платформах, которые стоят изнчально, юниты с лесницами - импорт, анимация установки лесницы - морф.
Тока он ставит лестницу ( при этом не куда попало, а в отведенное место ) включаются невидимые плятформы которые позволяют идти по стене. Вокруг лестницы блокираторы пути, чтобы юниты не обходили...